/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Applet;

import Applet.*;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Administrador
 */
public class Mailbox {

    ServerSocket servidor = null;
    private ObjectOutputStream salida;

    public static void main(String[] args) throws IOException {

        Socket socket = null;


        try {
            socket = new Socket("localhost", 4545);

            ObjectOutputStream salida = new ObjectOutputStream(socket.getOutputStream());

            MensajePeticion peticion = new MensajePeticion("recibi perfect");

            //salida.writeObject();

            ObjectInputStream entrada = null;
            entrada = new ObjectInputStream(socket.getInputStream());

            try {
                Object aux = entrada.readObject();
                System.out.println("Recibí el Mensaje en el Mailbox");

                if (aux instanceof MatrizResultado) {
                    MatrizResultado matResultado = (MatrizResultado) aux;
                    //matResultado.getMensajeDecifrado(); //Devulve el Vector de Arreglos de Bytes
                    imprimirMatriz(matResultado.getMensajeDecifrado());
                    sacarLlave(matResultado.getMensajeDecifrado());
                }

            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Mailbox.class.getName()).log(Level.SEVERE, null, ex);
            }


            System.out.println("Llego a Mailbox");




        } catch (IOException e) {
            System.err.println("Error de tipo IOException: " + e.getMessage());
            e.printStackTrace();
        }


    }

    public static void imprimirMatriz(Vector<byte[]> vectoraImprimir) {

        for (int i = 0; i < vectoraImprimir.size(); i++) {

            //Debemos hacer esta igualación para poder hacer el rrecorrido de cada arreglo
            byte[] aux = vectoraImprimir.elementAt(i);

            for (int j = 0; j < aux.length; j++) {
                System.out.println("Fila: " + i + "  Byte: " + j + "\t" + aux[j]);
            }
        }
    }

    public static void sacarLlave(Vector<byte[]> vectorDVectores) {

        for (int i = 0; i < vectorDVectores.size(); i++) {

            //Debemos hacer esta igualación para poder hacer el rrecorrido de cada arreglo
            byte[] aux = vectorDVectores.elementAt(i);

            String concatenado = new String(aux);
            if (concatenado.contains("login") || concatenado.contains("LOGIN")) {

                String valorBinario = Integer.toString(i,2);
                System.out.println("===========================");
                System.out.println("Llave Encontrada ="+valorBinario+"   Palabra:\t"+ concatenado);
                System.out.println("===========================");
            } else {
                System.out.println("NO existe ningun Login como Texto");

            }

        }



    }
}
